<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		// function  sum(num){
		// 	return num+10;
		// }	
		// function box(num){
		// 	return num+10;
		// }

		// var result = box(sum(10));
		// document.write(result+"<br/>");


		// function box(sum,num){
		// 	return sum(num);
		// }

		// function sum(num){
		// 	return 10+num;
		// }

		// var result = box(sum,10);   //函数可以作为参数进行传递
		// document.write(result);
		
		
		// function box(){
		// 	return function(){
		// 		alert(110);
		// 	};
		// }

		// var result = box();

		// result();   //通过result来调用这个函数
		// 
		

		// function box(num){
		// 	if(num == 1){
		// 		return num;
		// 	}else{
		// 		return num + arguments.callee(num-1);
		// 	}
		// }

		// alert(box(100));
		// 
		// 
		// window.color = "红色的";
		// document.write(this.color);			//打印全局
		//  var box={
		//  	color:"蓝色的",
		//  	box1:function(){
		//  		document.write(this.color);  //代表box对象
		// 		// document.write(this);
		//  	}
		//  }
		//  box.box1();
		 // document.write(this);
		//  
		 // function box(a,b,c){

		 // }

		 // alert(box.length);
		 // 
		 // 
		 // 
		 // function getMax(){
		 // 	var max = this[0];
		 // 	for(var i=0;i<this.length;i++){
		 // 		if(max<this[i]){
		 // 			max = this[i];
		 // 		}
		 // 	}
		 // 	return max;
		 // }


		 // Array.prototype.getMax1 = getMax;
		 // var arr = [1,15,52,65];
		 // document.write(arr.getMax1());
		 // var arr1 = [1,15,78,65];
		 // document.write(arr1.getMax1());
		 // 
		//  function box(n1,n2){
		// 	return n1+n2;
		// }

		// function box2(n1,n2){
		// 	return box.call(this,n1,n2);  //this指当前对象，通过call方法拿到box函数的内容
		// }

		// document.write(box2(10,20));
		// function box2(n1,n2){
		// 	return box.apply(this,[n1,n2]);  //this指当前对象，通过call方法拿到box函数的内容
		// }

		// document.write(box2(10,20));

		// window.color="红色的";
		// var box= {
		// 	color:"蓝色的"
		// }

		// function sayColor(){
		// 	document.write(this.color + "<br/>");
		// }

		// //通过call或apply扩展函数作用域（改变函数作用对象）
		// sayColor.call(this);  //作用域在window
		// sayColor.call(box);	//作用域在box，对象冒充


		// var arr = [1,2,5,45,12,10];
		// document.write(Math.max(1,2,5,45,12,10) + "<br/>");//没有改变作用域，只是改变函数的传参方式
		// 
		// 
		// var obj = new Object();
		// obj.name="xxx";
		// alert(obj.name);

		// var num=10;
		// num.name = "uuu";
		// alert(num.name);
		// 
		// function box(obj){
		// 	// var obj = new Object;
		// 	obj.name="乔巴";
		// }
		// var obj = new Object;
		// 	obj.name="小黑";
		// 	box(obj);  //传递的是引用值
		// 	alert(obj.name);
		// 	
		// var num = 125615;	
		// alert(num.toFixed(2));
		// var reg = /[a-zA-Z0-9]/g; 
		// alert(Math.random(5));
      // var code=arr.join("");
		 // document.write("验证码:"+arr);

	
		 
		    // arr.push(char);




		// var str = [];

		// function val(value1,value2){
		//  	for(var i=value1;i<value2;i++){
		//  		str.push(i);
		//  	}
		// }
		// var num = val(48,57);
		// var big = val(65,90);
		// var small = val(97,122);
		// for(var i=0;i<4;i++) {
		//     var index = Math.floor(Math.random() * str.length);
		//     var char = String.fromCharCode(str[index]);
		//     document.write(char);
		// }
		// 
		// 
		// var index;
		// var str = "    a 2 c  vvv  ";
		// var arr=[];
		// for(var i=0; i<str.length;i++){
		// 	arr.push(str.charAt(i));
		// 	if(arr[0]==" "){
		// 		var str2=arr.splice(0,1);
		// 		index=i;
		// 	}
		// }
		// for(var j=arr.length-1 ;j>index;j--){
		// 	if(arr[arr.length-1]==" "){
		// 		var str2=arr.splice(arr.length-1,1);
		// 	}
		// }
		// document.write(arr.join(""));
		// 
		// 
		// var str = "abc";
		// var str2 = "def";
		// alert(str.substring(0,4));
		// 
		// function test(a,b){
		// 	var c=10;
		// 	function d(){}
		// 	var e=function _e(){}
		// 	b=20;
		// }
		// ？vo 在全局变量中就相当于window
		// 
		// alert(x);
		// // var x=10;
		// console.log('Test0');
  //   //函数1
  //   function funTest1(){

  //        console.log('Test1');
  //      //函数2   
  //     function funTest2(){

  //          console.log('Test2');
  //      //函数3 
  //       function funTest3(){

  //           console.log('Test3');
  //       }
  //      funTest3();
  //     }
  //     funTest2();
  //   }
  //   funTest1();


/**
 * 1.全局作用域   
 * 2.函数作用域     
 * 3.执行上下文 
 * 4.变量对象
 * 5.变量初始化阶段 1.初始化阶段 2.代码执行阶段
 *   >函数参数(若未有传入,初始化该参数值为undefined)
 *   >函数声明(若发生命名冲突,会覆盖)
 *   >变量声明(初始化变量值为undefined,若发生命名冲突,会忽略)
 */
   
   //理解,执行上下文
  
/* console.log('Test0');
    //函数1
    function funTest1(){

         console.log('Test1');
       //函数2   
      function funTest2(){

           console.log('Test2');
       //函数3 
        function funTest3(){

            console.log('Test3');
        }
       funTest3();
      }
      funTest2();
    }
    funTest1();*/


/**
   理解 变量对象(Variable Object 缩写VO)
   变量对象是一个抽象的概念,指的是在全局作用域下或者是在函数作用域下,作
   用于函数或变量的初始化工作。*/

/*   function test(a,b){//顺序 首先是参数声明,函数数声明,变量的声明
      
      var  c = 10;
      function d(){}
      var e=function _e(){}//函数表达式名字不会VO。
      b=20;

   }

  //2.代码执行阶段
   test(10);
        VO(test){
        a:10,
        b:20,
        c:10,
        d:function(){},
        e:function(){}    
      }*/

    //题目一
    
    function foo(z){//z = 100
          function z(){          
          }
          document.write(z);
    }

    foo(100);

   
    //题目二
    function foo(x){
         function func(){}
         var func;
         document.write(func);
    }
    foo(100);


    //题目三
/*    function foo(x){
         function func(){};
         var func=1;
         document.write(func)
    }
foo(100);*/

    
    //题目四
    // alert(x);//function(){} 1 2 3 4
    // var x = 10;
    // alert(x);//10 1 2 3 4
    // x=20;
    // function x(){}
    // alert(x);//1,4》20  2》function(){} 3》undefind
    // if(true){
    //    var a = 1;
    // }else{
    //    var b = true;
    // }
    // alert(a);//1   1,2,3,4
    // alert(b);//2>报错 1,4,3>undefined 


// var val = "xiaoheihhhjdioah";
// function show(){
// 	var index = 0;
// 	do{
// 		index = val.indexOf("h",index);
// 		document.write(index);
// 		if(index==-1){
// 			break;
// 		}
// 		index++;
// 	}while(index!=-1);

// }
	 //   var box = 'blue';
		// var box = 'blue';
		// 			function setBox() {
		// 				function setColor() {
		// 					var b = 'orange';
		// 					alert(box);
		// 					alert(b);
		// 				}
		// 				setColor();	       //setColor()的执行环境在 setBox()内
		// 			}
		// 			setBox();

	</script>

	<!-- <div onclick="show()">aaa</div> -->
</body>
</html>